home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / 32INVENT.PAK / MACRO.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  3KB  |  102 lines

  1. // BDE32 3.x - (C) Copyright 1996 by Borland International
  2.  
  3. // includes the macro.h header file needed for this macro
  4. #include "inventry.h"  
  5.  
  6. //      The way to use this macro is to include the macro.h header
  7. //      file where you want to use this macro. Then pass an IDAPI
  8. //      function as a parameter to the macro:
  9. //
  10. //      #define CHKERR(parm) DBIError(__FILE__, __LINE__, \    //
  11. //                                   #parm, parm) ; \          //
  12. //                                   if ( GlobalDBIErr ) { \   //
  13. //                                       return GlobalDBIErr ;}
  14. //
  15. //      You would then use it as such:
  16. //          CHKERR(DbiCreateTable(hDb, bOverWrite, &crTblDsc)) ;
  17.  
  18. DBIResult GlobalDBIErr;
  19. static char szDBIStatus[(DBIMAXMSGLEN * 7)+1];
  20. static char szMessage[(DBIMAXMSGLEN * 7)+1+110];
  21. //====================================================================
  22. //  Function:
  23. //          DBIError();
  24. //
  25. //  Input:  module name (pCHAR), line number (UINT16), Engine function
  26. //          name (pCHAR), Result (DBIResult)
  27. //
  28. //  Return: A DBIResult value.
  29. //
  30. //  Description:
  31. //          This is function that takes in the information of where
  32. //          the error accured and displays that is a message box.
  33. //          The information listed above explains how to use this
  34. //          function inside of a macro.
  35. //====================================================================
  36. DBIResult
  37. DBIError (pCHAR module, UINT16 line, pCHAR function, DBIResult retVal)
  38. {
  39.     DBIErrInfo  ErrInfo;
  40.  
  41.     if (retVal == DBIERR_NONE)
  42.     {
  43.         GlobalDBIErr = DBIERR_NONE;
  44.         return retVal;
  45.     }
  46.     if (retVal != DBIERR_CANTFINDODAPI)
  47.     {
  48.         // Get as much error information as possible
  49.         DbiGetErrorInfo(TRUE, &ErrInfo);
  50.  
  51.         // Make certain information is returned on the correct error
  52.         if (ErrInfo.iError == retVal)
  53.         {
  54.             strcpy(szDBIStatus, ErrInfo.szErrCode);
  55.  
  56.             if (strcmp(ErrInfo.szContext1, ""))
  57.             {
  58.                 strcat(szDBIStatus, ErrInfo.szContext1);
  59.             }
  60.             if (strcmp(ErrInfo.szContext2, ""))
  61.             {
  62.                 strcat(szDBIStatus, ErrInfo.szContext2);
  63.             }
  64.             if (strcmp(ErrInfo.szContext3, ""))
  65.             {
  66.                 strcat(szDBIStatus, ErrInfo.szContext3);
  67.             }
  68.             if (strcmp(ErrInfo.szContext4, ""))
  69.             {
  70.                 strcat(szDBIStatus, ErrInfo.szContext4);
  71.             }
  72.         }
  73.         else {
  74.             DbiGetErrorString(retVal, szDBIStatus);
  75.         }
  76.  
  77.         sprintf(szMessage, "Module:\t\t%s\nFunction:\t%s\nLine:\t\t%d\n"
  78.                 "Category:\t%d\nCode:\t\t%d\nError:\r\n\r\n%s\n", module,
  79.                 function, line, ErrCat(retVal), ErrCode(retVal),
  80.                 szDBIStatus);
  81.  
  82.         MessageBox(hErrorWnd, szMessage, "Inventory Error",
  83.                    MB_ICONEXCLAMATION);
  84.  
  85.         if(hErrorWnd == hMainWnd)
  86.         {
  87.             SetItemFocus();
  88.         }
  89.         else
  90.         {
  91.             PostMessage(hErrorWnd, WM_SETFOCUS,0,0L);
  92.         }
  93.     }
  94.     else
  95.     {
  96.         MessageBox(NULL, "Cannot find IDAPI files: Check path.",
  97.                    "IDAPI Initialization Error", MB_ICONHAND | MB_OK);
  98.     }
  99.     GlobalDBIErr = retVal;
  100.     return retVal;
  101. }
  102.